import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.pyplot import title

plt.rcParams['font.sans-serif'] = ['SimHei']

#第一问
print('第一问')
data = pd.read_csv('./数据.csv',encoding='gbk')
print(data.head())#检查是否读入
print(data.info())
#查看后无缺失值情况，总共有9列2583行，但每列只有2551行数据，存在整行空缺
data.dropna(how='all',inplace=True)
print(data.info())

#第二问
print('第二问')
data['总价'] = data['总价'].str.replace('万','').astype(float)
data['建筑面积'] = data['建筑面积'].str.replace('平米','').astype(float)
data['单价'] = data['单价'].str.replace('元/平米','').astype(float)
print(data.head())

#第三问
print('第三问')
data[['室','厅','卫']] = data['户型'].str.extract(r'(\d+)室(\d+)厅(\d+)卫').astype(float)
print(data.head())

#第四问
print('第四问')
print(data.describe().round(2))#这里可以看到有的没有户型

#第五问分组
print('第五问')
data1 = data.groupby('区域')['总价'].mean()
data1.sort_values(ascending=True,inplace=True)
print(data1)
plt.figure(figsize=(10,5))
plt.barh(
    data1.index,
    data1.values,
    color='b',
    height=0.8
)
plt.title('各区域平均总价')
plt.xlabel('平均总价')
plt.ylabel('区域')
plt.show()

#第六问
print('第六问')
data2 = data.groupby('室')['小区名字'].count()
print(data2)
plt.figure(figsize=(10,5))
plt.bar(
    data2.index,
    data2.values,
    color='r',
    width=0.8,
)
plt.title('“几室”的户型数量分布图')
plt.xlabel('几室')
plt.ylabel('count')
plt.show()

#第七问
print('第七问')
data3 = data.groupby('装修')['小区名字'].count()
print(data3)
a = data3.values/data3.values.sum()
plt.figure(figsize=(10,5))
plt.pie(
    x = a,
    labels = data3.index,
    autopct='%1.1f%%'
)
plt.title('装修类型比例图')
plt.show()

#第八问
plt.figure(figsize=(10,5))
plt.scatter(data['建筑面积'],
            data['单价'])
plt.xlim(10,1000)#一开始没有这个范围，后面发现图像有问题，有异常值，缩小范围
plt.title('面积与单价的关系')
plt.xlabel('单价')
plt.ylabel('建筑面积')
plt.grid(True)
plt.show()